package Notificaciones;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;

/**
 * Clase que actuará como la implementación de una cola. A esta se le irán pasando mensajes y los ira devolviendo segun los pida.
 * 
 * @author Juan Jesús Fernández Madrid | Claudia Luque | Vanesa Gonzalez | Adrian Bellido | Jose Antonio Marin
 *
 */
public class Notificacion implements Runnable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Vector<String> mensajes = null;
	String msj;
	
	public Notificacion(){
		
		mensajes = new Vector<String>();
		msj = new String();
		
		mensajes.addElement("Creado sistema de notificaciones");
	}

	
	/**
	 * Añade un mensaje a la cola de impresion
	 * 
	 * @param msj
	 */
	public void anadirMensaje(String msj){

			mensajes.addElement(msj);
	}
	
	
	/**
	 * Devuelve el primer mensaje en la cola y lo quita de esta
	 * 
	 * @return
	 */
	public String obtenerSiguienteMensaje(){
		msj = mensajes.firstElement() + "\n";
		
		mensajes.removeElementAt(0);
		
		return msj;		
	}
	
	
	/**
	 * Devuelve el numero de mensajes restantes en la cola
	 * 
	 */
	public int numeroMensajesRestantes(){
		return mensajes.size();
	}
	
	
	/**
	 * Elimina todos los mensajes de la cola
	 * 
	 */
	public void vaciarMensajes(){
		mensajes.removeAllElements();
	}
	
	
	/**
	 * Devuelve todos los mensajes que esten en la cola
	 * 
	 */
	public String devolverTodosLosMensajes(){
		msj = "";
		
		while(numeroMensajesRestantes() > 0){
			msj += obtenerSiguienteMensaje();
		}
		
		return msj;
	}


	/**
	 * Metodo necesario al ser runnable, de momento, simplemente muestra que se encuentra en ejecucion
	 */
	@Override
	public void run() {
		
	}
	
	
	/**
	 * Metodo main para la prueba del funcionamiento de la clase Notificacion
	 * @param args
	 * @throws IOException
	 */
	/*public static void main(String args[]) throws IOException{
		Notificacion nt = new Notificacion();
		
		Thread hilont = new Thread(nt);
		
		hilont.start();
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String linea;// = br.readLine();
		
		do{
			System.out.println("Introduce el texto a añadir: ");
			linea = br.readLine();
			
			nt.anadirMensaje(linea);
		}while(!linea.equals("0"));
		
		System.out.println("LOS MENSAJES INTRODUCIDOS SON LOS SIGUIENTES: \n" + nt.devolverTodosLosMensajes());
		
		while(nt.numeroMensajesRestantes() > 0){
			System.out.println("Mensaje: " + nt.obtenerSiguienteMensaje());
			System.out.println("Mensajes restantes: " + nt.numeroMensajesRestantes());
		}	
		
	}*/
}
